home *** CD-ROM | disk | FTP | other *** search
- //--------------------------------------------------------------------------
- //
- // Copyright (c) 2002, Colin Granville
- //
- // All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or
- // without modification, are permitted provided that the following
- // conditions are met:
- //
- // * Redistributions of source code must retain the above copyright
- // notice, this list of conditions and the following disclaimer.
- //
- // * Redistributions in binary form must reproduce the above
- // copyright notice, this list of conditions and the following
- // disclaimer in the documentation and/or other materials
- // provided with the distribution.
- //
- // * The name Colin Granville may not be used to endorse or promote
- // products derived from this software without specific prior
- // written permission.
- //
- // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- // COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- // OF THE POSSIBILITY OF SUCH DAMAGE.
- //
- //--------------------------------------------------------------------------
-
- #include "GuiDrawFilePath.h"
- #include <limits.h>
-
- GuiDrawFilePath::GuiDrawFilePath(GuiDrawFile& d)
- : drawfile(d)
- {
- ob.typeId=OBJECT_ID;
- }
-
- //***************************************************************
-
- GuiDrawFilePath::~GuiDrawFilePath()
- {
- }
-
- //***************************************************************
-
- void GuiDrawFilePath::start()
- {
- ob.bounds(INT_MAX,INT_MAX,INT_MIN,INT_MIN);
- ob.size=drawfile.startObject(sizeof(GuiDrawFileGraphicsObject) + sizeof(GuiDrawFilePathState));
- }
-
- //***************************************************************
-
- void GuiDrawFilePath::end(const GuiDrawFilePathState& state,bool clip)
- {
- if (clip)
- {
- moveTo(); point(ob.bounds.xmin,ob.bounds.ymin);
- drawTo(); point(ob.bounds.xmin,ob.bounds.ymax);
- drawTo(); point(ob.bounds.xmax,ob.bounds.ymax);
- drawTo(); point(ob.bounds.xmax,ob.bounds.ymin);
- closeSubPath();
- };
-
- drawfile.put(0);
- if (state.getOutlineColour()!=GuiDrawFilePathState::OFF)
- {
- int wid=state.getOutlineWidth();
- ob.bounds.xmin-=wid;
- ob.bounds.xmax+=wid;
- ob.bounds.ymin-=wid;
- ob.bounds.ymax+=wid;
- }
-
- if (drawfile.hasFailed()) return;
-
- int offset=ob.size;
- ob.size=drawfile.getSize()-offset;
- *(GuiDrawFileGraphicsObject*)drawfile.getPtr(offset)=ob;
- *(GuiDrawFilePathState*)drawfile.getPtr(offset+sizeof(GuiDrawFileGraphicsObject))=state;
- drawfile.addBBox(ob.bounds);
- drawfile.endObject();
- }
-
- //***************************************************************
- //***************************************************************
- //***************************************************************
-
- void GuiDrawFilePathState::reset()
- {
- fillColour=OFF;
- outlineColour=OFF;
- outlineWidth=0;
- pathStyle=0;
- capWidth=0;
- capHeight=0;
- }
-